package com.example.demo.config;

import org.springframework.web.servlet.HandlerInterceptor;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

/**
 *  自定义拦截器
 */
// 不用加五大类注解.
// 1. 实现 HandlerInterceptor 接口
public class LoginInterceptor implements HandlerInterceptor {

    /**
     * @param request 请求
     * @param response 相应
     * @return true: 验证成功, 继续执行后续流程.
     *         false: 验证失败, 后续流程不可继续执行.
     */
    // 2. 重写 preHandler 方法
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response,
                             Object handler) throws Exception {
        // 业务代码: 用户登录判断.
        HttpSession session = request.getSession(false);
        if (session != null && session.getAttribute("userinfo") != null) {
            // 说明用户已经登录, 验证成功.
            return true;
        } else {
            // 用户未登录, 可以直接跳转到登录页面, 也可以返回一个 401/403 没有权限码
            // response.setStatus(403);
            response.sendRedirect("/login.html");
            return false;
        }
    }
}
